unit Datos;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ZConnection, DB, StdCtrls, ZAbstractRODataset, ZAbstractDataset,
  ZAbstractTable, ZDataset;

type
  TTipoComponente=class(TObject)
    codigo:integer;
    descripcion:string;
  end;

  TMoneda=class(TObject)
    codigo:integer;
    descripcion:string;
  end;
  TfrmDatos = class(TForm)
    ZConnection1: TZConnection;
    tblClientes: TZTable;
    Label1: TLabel;
    tblClientescod_cliente: TIntegerField;
    tblClientesnombre_cliente: TStringField;
    tblClientesapellido_cliente: TStringField;
    tblClientesdomicilio_cliente: TStringField;
    tblClientesemail_cliente: TStringField;
    tblClientescliente_activo: TBooleanField;
    tblClientescod_condicion_iva: TIntegerField;
    tblClientescod_preventivo: TIntegerField;
    tblClientescod_localidad: TIntegerField;
    dsClientes: TDataSource;
    Label2: TLabel;
    tblProvincia: TZTable;
    Label3: TLabel;
    tblLocalidades: TZTable;
    tblCondicionIva: TZTable;
    Label4: TLabel;
    qryAltaCliente: TZQuery;
    qryAltaTelefono: TZQuery;
    Label5: TLabel;
    qryFiltroClientes: TZQuery;
    dsFiltroClientes: TDataSource;
    qryBajaCliente: TZQuery;
    qryObtenerTelefonos: TZQuery;
    qryModificarCliente: TZQuery;
    qryBajaTelefonoCliente: TZQuery;
    qryFiltroTecnico: TZQuery;
    qryAltaTecnico: TZQuery;
    qryBajaTecnico: TZQuery;
    dsFiltroTecnico: TDataSource;
    Label6: TLabel;
    Label7: TLabel;
    qryFiltroMaquinas: TZQuery;
    dsFiltroMaquinas: TDataSource;
    qryAltaMaquina: TZQuery;
    qryBajaMaquina: TZQuery;
    qryModificarMaquina: TZQuery;
    Label8: TLabel;
    qryAltaContacto: TZQuery;
    qryBajaContacto: TZQuery;
    qryModificarTecnico: TZQuery;
    qryFiltroContactos: TZQuery;
    dsFiltroContactos: TDataSource;
    qryModificarContacto: TZQuery;
    qryConsultaTelefonosContactosCliente: TZQuery;
    qryConsultaContactosCliente: TZQuery;
    dsProvincia: TDataSource;
    tblProvinciacod_provincia: TIntegerField;
    tblProvinciadescripcion_provincia: TStringField;
    qryAltaProvincia: TZQuery;
    qryBajaProvincia: TZQuery;
    Label9: TLabel;
    tblComponentesStock: TZTable;
    tblComponentesStocknroserie: TStringField;
    tblComponentesStockdescripcion: TStringField;
    tblComponentesStocktipo: TStringField;
    tblComponentesStockcodigotipo: TIntegerField;
    tblComponentesStockcodigomoneda: TIntegerField;
    tblComponentesStockprecio: TStringField;
    dsComponentesStock: TDataSource;
    Label10: TLabel;
    tblTipoComponente: TZTable;
    tblTipoComponentecod_tipo_componente: TIntegerField;
    tblTipoComponentedescripcion_tipo_componente: TStringField;
    tblTipoComponenteactivo: TBooleanField;
    Label11: TLabel;
    tblMoneda: TZTable;
    tblMonedacod_moneda: TIntegerField;
    tblMonedadescripcion_moneda: TStringField;
    tblMonedaactivo: TBooleanField;
    qryModificarComponente: TZQuery;
    qryAltaComponente: TZQuery;
    qryBajaComponente: TZQuery;
    Label12: TLabel;
    qryModificarPrecio: TZQuery;
    tblListaPrecios: TZTable;
    tblListaPreciosnroserie: TStringField;
    tblListaPrecioscomponente: TStringField;
    tblListaPrecioscodigomoneda: TIntegerField;
    tblListaPreciosprecio: TStringField;
    Label13: TLabel;
    tblEstadoReclamo: TZTable;
    qryAltaEstadoReclamo: TZQuery;
    qryBajaEstadoReclamo: TZQuery;
    dtsEstadoReclamo: TDataSource;
    qryBajaMoneda: TZQuery;
    qryAltaMoneda: TZQuery;
    dtsMoneda: TDataSource;
    dtsCondicionIVA: TDataSource;
    qryAltaCondicionIVA: TZQuery;
    qryBajaCondicionIVA: TZQuery;
    qryBajaLocalidades: TZQuery;
    qryAltaLocalidades: TZQuery;
    dtsLocalidades: TDataSource;
    Label14: TLabel;
    dtsPrioridadReclamo: TDataSource;
    tblPrioridadReclamo: TZTable;
    qryAltaPrioridadReclamo: TZQuery;
    qryBajaPrioridadReclamo: TZQuery;
    dsTipoComponente: TDataSource;
    tblEstadoReclamocod_estado: TIntegerField;
    tblEstadoReclamodescripcion_estado: TStringField;
    tblEstadoReclamoactivo: TBooleanField;
    qryModificarEstadoReclamo: TZQuery;
    qryModificarMoneda: TZQuery;
    qryModificarPrioridadReclamo: TZQuery;
    qryModificarLocalidad: TZQuery;
    Label15: TLabel;
    qryFiltroReclamos: TZQuery;
    dsFiltroReclamos: TDataSource;
    qryAltaReclamo: TZQuery;
    qryModificarEstado: TZQuery;
    qryModificarTurno: TZQuery;
    qryListadoTurnosDia: TZQuery;
    dsListadoTurnosDia: TDataSource;
    qryActualizarPrioridades: TZQuery;
    Label16: TLabel;
    qryReparaciones: TZQuery;
    dsReparaciones: TDataSource;
    tblLugarReparacion: TZTable;
    Label17: TLabel;
    tblLugarReparacioncod_lugar: TIntegerField;
    tblLugarReparaciondescripcion_lugar: TStringField;
    tblLugarReparacionactivo: TBooleanField;
    qryAltaReparacion: TZQuery;
    tblReclamos: TZTable;
    tblReclamoscod_reclamo: TIntegerField;
    tblReclamoscod_cliente: TIntegerField;
    tblReclamosfecha_reclamo: TDateTimeField;
    tblReclamoscod_estado: TIntegerField;
    tblReclamoscod_prioridad: TIntegerField;
    tblReclamosdescripcion_problema: TStringField;
    tblReclamosfecha_turno: TDateField;
    tblReclamoshora_turno: TTimeField;
    tblReclamospreventivo: TBooleanField;
    tblMaquinas: TZTable;
    tblMaquinasnro_serie_pc: TStringField;
    tblMaquinascod_cliente: TIntegerField;
    tblMaquinasdescripcion_maquina: TStringField;
    tblMaquinasfecha_alta: TDateField;
    tblMaquinasfecha_baja: TDateField;
    qryModificarCondicion: TZQuery;
    qryModificarProvincia: TZQuery;
    qryAltaComponenteReparacion: TZQuery;
    qryHistorialReparaciones: TZQuery;
    procedure dsComponentesStockDataChange(Sender: TObject; Field: TField);
    procedure dtsEstadoReclamoDataChange(Sender: TObject; Field: TField);
    procedure dtsMonedaDataChange(Sender: TObject; Field: TField);
    procedure dtsPrioridadReclamoDataChange(Sender: TObject;
      Field: TField);
    procedure dtsLocalidadesDataChange(Sender: TObject; Field: TField);
    procedure dsFiltroReclamosDataChange(Sender: TObject; Field: TField);
    procedure dsReparacionesDataChange(Sender: TObject; Field: TField);
    procedure dtsCondicionIVADataChange(Sender: TObject; Field: TField);
    procedure dsTipoComponenteDataChange(Sender: TObject; Field: TField);
    procedure dsProvinciaDataChange(Sender: TObject; Field: TField);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmDatos: TfrmDatos;

implementation

uses MantenimientoComponentes, MantenimientoEstadoReclamo,
  MantenimientoMonedas, MantenimientoPrioridadReclamo,
  MantenimientoLocalidades, Reclamos, Reparaciones, MantenimientoCondIVA,
  MantenimientoCondicionIVA, MantenimientoTiposComponentes,
  MantenimientoProvincias;

{$R *.dfm}

procedure TfrmDatos.dsComponentesStockDataChange(Sender: TObject;
  Field: TField);
var i,indice:integer;
    objeto:TTipoComponente;
    objetoMoneda:TMoneda;
begin
  if frmMantenimientoComponentes.banderaInicio=1 then
    begin
      if tblComponentesStock.RecordCount = 0 then
        begin
          frmMantenimientoComponentes.edtNroSerie.Text:= '';
          frmMantenimientoComponentes.edtComponente.Text:= '';
          frmMantenimientoComponentes.edtPrecio.Text:= '';
          frmMantenimientoComponentes.edtCodMoneda.Text:= '';
          frmMantenimientoComponentes.edtCodTipoComponente2.Text:= '';
          frmMantenimientoComponentes.cmbTipoComponente2.ItemIndex:=-1;
          frmMantenimientoComponentes.cmbMoneda.ItemIndex:=-1;
          abort;
        end;
      frmMantenimientoComponentes.edtNroSerie.Text:= tblComponentesStock['nroserie'];
      frmMantenimientoComponentes.edtComponente.Text:= tblComponentesStock['descripcion'];
      frmMantenimientoComponentes.edtPrecio.Text:= tblComponentesStock['precio'];
      frmMantenimientoComponentes.edtCodMoneda.Text:= tblComponentesStock['codigomoneda'];
      frmMantenimientoComponentes.edtCodTipoComponente2.Text:= tblComponentesStock['codigotipo'];

      indice:=-1;
      for i:=0 to frmMantenimientoComponentes.cmbTipoComponente2.Items.Count-1 do
        begin
           objeto:=TTipoComponente(frmMantenimientoComponentes.cmbTipoComponente2.Items.Objects[i]);
           if objeto.codigo = StrToInt(frmMantenimientoComponentes.edtCodTipoComponente2.Text) then
             indice:=i;
        end;
      frmMantenimientoComponentes.cmbTipoComponente2.ItemIndex:=indice;

      indice:=-1;
      for i:=0 to frmMantenimientoComponentes.cmbMoneda.Items.Count-1 do
        begin
           objetoMoneda:=TMoneda(frmMantenimientoComponentes.cmbMoneda.Items.Objects[i]);
           if objetoMoneda.codigo = StrToInt(frmMantenimientoComponentes.edtCodMoneda.Text) then
             indice:=i;
        end;
      frmMantenimientoComponentes.cmbMoneda.ItemIndex:=indice;
    end;
end;

procedure TfrmDatos.dtsEstadoReclamoDataChange(Sender: TObject;
  Field: TField);
begin
  if tblEstadoReclamo.RecordCount>0 then
    begin
      frmMantenimientoEstadoReclamo.edtCodEstado.Text := tblEstadoReclamo['cod_estado'];
      frmMantenimientoEstadoReclamo.edtDescripcion.Text := tblEstadoReclamo['descripcion_estado'];
    end
  else
    begin
      frmMantenimientoEstadoReclamo.edtCodEstado.Text := '';
      frmMantenimientoEstadoReclamo.edtDescripcion.Text := '';
    end;
end;

procedure TfrmDatos.dtsMonedaDataChange(Sender: TObject; Field: TField);
begin
  if tblMoneda.RecordCount > 0 then
    begin
      frmMantenimientoMonedas.edtCodMoneda.Text:=tblMoneda['cod_moneda'];
      frmMantenimientoMonedas.edtDescripcion.Text:=tblMoneda['descripcion_moneda'];
    end
  else
    begin
      frmMantenimientoMonedas.edtCodMoneda.Text:='';
      frmMantenimientoMonedas.edtDescripcion.Text:='';
    end;
end;

procedure TfrmDatos.dtsPrioridadReclamoDataChange(Sender: TObject;
  Field: TField);
begin
  if tblPrioridadReclamo.RecordCount>0 then
    begin
      frmMantenimientoPrioridadReclamo.edtCodPrioridad.Text:=tblPrioridadReclamo['cod_prioridad'];
      frmMantenimientoPrioridadReclamo.edtDescripcion.Text:= tblPrioridadReclamo['descripcion_prioridad'];
    end
  else
    begin
      frmMantenimientoPrioridadReclamo.edtCodPrioridad.Text:='';
      frmMantenimientoPrioridadReclamo.edtDescripcion.Text:= '';
    end;
end;

procedure TfrmDatos.dtsLocalidadesDataChange(Sender: TObject;
  Field: TField);
begin
  if tblLocalidades.RecordCount>0 then
    begin
      frmMantenimientoLocalidades.edtCodLocalidad.Text:=tblLocalidades['cod_localidad'];
      frmMantenimientoLocalidades.edtLocalidad.Text:= tblLocalidades['descripcion_localidad'];
      if tblLocalidades['prefijo_telefono'] <> Null then
        frmMantenimientoLocalidades.edtPrefijo.Text:= tblLocalidades['prefijo_telefono'];
      frmMantenimientoLocalidades.edtCodPostal.Text:= tblLocalidades['cod_postal'];
      frmMantenimientoLocalidades.edtCodProvincia.Text:= IntToStr(tblLocalidades['cod_provincia']);

      frmMantenimientoLocalidades.ElejirProvincia();
    end
  else
    begin
      frmMantenimientoLocalidades.edtCodLocalidad.Text:='';
      frmMantenimientoLocalidades.edtLocalidad.Text:= '';
      frmMantenimientoLocalidades.edtPrefijo.Text:= '';
      frmMantenimientoLocalidades.edtCodPostal.Text:= '';
      frmMantenimientoLocalidades.edtCodProvincia.Text:= '';
    end;
end;

procedure TfrmDatos.dsFiltroReclamosDataChange(Sender: TObject;
  Field: TField);
begin
  if qryFiltroReclamos.RecordCount>0 then
    begin
      frmReclamos.edtCodReclamo.Text:= IntToStr(qryFiltroReclamos['cod_reclamo']);
      frmReclamos.edtCodCliente.Text:= IntToStr(qryFiltroReclamos['cod_cliente']);
      frmReclamos.edtCodEstado.Text:=IntToStr(qryFiltroReclamos['cod_estado']);
      frmReclamos.edtCodPrioridad.Text:=IntToStr(qryFiltroReclamos['cod_prioridad']);
      if qryFiltroReclamos['hora_turno']<>null then
        frmReclamos.edtHora.Text:= qryFiltroReclamos['hora_turno']
      else
        frmReclamos.edtHora.Text:='';

      frmReclamos.edtDescripcion.Text:=qryFiltroReclamos['descripcion_problema'];
      frmReclamos.dtpFechaReclamo.Date:=qryFiltroReclamos['fecha_reclamo'];

      if qryFiltroReclamos['fecha_turno']<>Null then
        frmReclamos.dtpFechaTurno.Date:=qryFiltroReclamos['fecha_turno']
      else
        frmReclamos.dtpFechaTurno.Date:=Now;

      if qryFiltroReclamos['preventivo'] = true then
        frmReclamos.chkPreventivo.Checked:=true
      else
        frmReclamos.chkPreventivo.Checked:=false;

      if frmReclamos.bandera=1 then
        frmReclamos.LlenarCombos;
    end
  else
    begin
      frmReclamos.edtCodReclamo.Text:= '';
      frmReclamos.edtCodCliente.Text:= '';
      frmReclamos.edtCodEstado.Text:='';
      frmReclamos.edtCodPrioridad.Text:='';
      frmReclamos.edtHora.Text:='';
      frmReclamos.edtDescripcion.Text:='';
      frmReclamos.dtpFechaReclamo.Date:=now();
      frmReclamos.dtpFechaTurno.Date:=now();
      frmReclamos.chkPreventivo.Checked:=false;
      frmReclamos.cmbCliente.ItemIndex:=-1;
      frmReclamos.cmbEstado.ItemIndex:=-1;
      frmReclamos.cmbPrioridad.ItemIndex:=-1;
    end;
end;

procedure TfrmDatos.dsReparacionesDataChange(Sender: TObject;
  Field: TField);
begin
  if qryReparaciones.RecordCount>0 then
    begin
      frmReparaciones.edtCodReparacion.Text:=qryReparaciones['cod_reparacion'];
      frmReparaciones.edtCodReclamo.Text:=qryReparaciones['cod_reclamo'];
      frmReparaciones.DateTimePicker1.Date:=qryReparaciones['fecha_reparacion'];
      frmReparaciones.edtTecnico.Text:=qryReparaciones['apellido_tecnico'] + ' ' + qryReparaciones['nombre_tecnico'];
      frmReparaciones.edtCliente.Text:=qryReparaciones['apellido_cliente'] + ' ' + qryReparaciones['nombre_tecnico'];
      frmReparaciones.edtNroSerie.Text:=qryReparaciones['nro_serie_pc'];
      frmReparaciones.edtLugar.Text:=qryReparaciones['descripcion_lugar'];
      frmReparaciones.edtObservaciones.Text:=qryReparaciones['descripcion_reparacion'];
    end
  else
    begin
      frmReparaciones.edtCodReparacion.Text:='';
      frmReparaciones.edtCodReclamo.Text:='';
      frmReparaciones.DateTimePicker1.Date:=now();
      frmReparaciones.edtTecnico.Text:='';
      frmReparaciones.edtCliente.Text:='';
      frmReparaciones.edtNroSerie.Text:='';
      frmReparaciones.edtLugar.Text:='';
      frmReparaciones.edtObservaciones.Text:='';
    end;
end;

procedure TfrmDatos.dtsCondicionIVADataChange(Sender: TObject;
  Field: TField);
begin
  if tblCondicionIva.RecordCount>0 then
    begin
      frmMantenimientoCondicionIVA.edtCodigoIVA.Text:=tblCondicionIva['cod_condicion_iva'];
      frmMantenimientoCondicionIVA.edtDescripcionIVA.Text:= tblCondicionIva['descripcion_condicion_iva'];
    end
  else
    begin
      frmMantenimientoCondicionIVA.edtCodigoIVA.Text:='';
      frmMantenimientoCondicionIVA.edtDescripcionIVA.Text:= '';
    end;
end;

procedure TfrmDatos.dsTipoComponenteDataChange(Sender: TObject;
  Field: TField);
begin
  if tblTipoComponente.RecordCount>0 then
    begin
      frmMantenimientoTiposComponentes.edtCodigoTipo.Text:=tblTipoComponente['cod_tipo_componente'];
      frmMantenimientoTiposComponentes.edtDescripcionTipo.Text:= tblTipoComponente['descripcion_tipo_componente'];
    end
  else
    begin
      frmMantenimientoTiposComponentes.edtCodigoTipo.Text:='';
      frmMantenimientoTiposComponentes.edtDescripcionTipo.Text:= '';
    end;
end;

procedure TfrmDatos.dsProvinciaDataChange(Sender: TObject; Field: TField);
begin
  if tblProvincia.RecordCount>0 then
    begin
      frmMantenimientoProvincias.edtCodigoProvincia.Text:=tblProvincia['cod_provincia'];
      frmMantenimientoProvincias.edtDescripcionProvincia.Text:= tblProvincia['descripcion_provincia'];
    end
  else
    begin
      frmMantenimientoProvincias.edtCodigoProvincia.Text:='';
      frmMantenimientoProvincias.edtDescripcionProvincia.Text:= '';
    end;
end;

end.
